home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 6: Level 6 / 17 Bit - Level 6 (1998)(Epic Marketing)[!].iso / quartz / q0040.dms / q0040.adf / top / io.s < prev    next >
Text File  |  1990-12-06  |  4KB  |  346 lines

  1.     ; io.c
  2.     SECTION NUM1,DATA
  3. L0:
  4.     dc.l    -1
  5. L1:
  6.     dc.l    L2
  7.     dc.l    L3
  8.     dc.l    L4
  9.     SECTION NUM2,BSS
  10.     XDEF    _t_line
  11. _t_line    DS.B    4
  12.     XDEF    _t_lab
  13. _t_lab    DS.B    4
  14.     XDEF    _t_op
  15. _t_op    DS.B    4
  16.     XDEF    _t_arg
  17. _t_arg    DS.B    4
  18. L5:    ds.b    2048
  19.     SECTION NUM3,CODE
  20.     XDEF    _readline
  21. _readline:
  22.     bra    L7
  23. L6:
  24. L9:
  25.     move.l    _ifp,-(sp)
  26.     move.l    #2048,-(sp)
  27.     move.l    #L5,-(sp)
  28.     jsr    _fgets
  29.     add.w    #12,sp
  30.     tst.l    d0
  31.     bne    L12
  32.     clr.l    d0
  33.     bra    L8
  34. L12:
  35.     move.l    #L5,_t_line
  36.     move.l    #L5,-(sp)
  37.     jsr    _tokenize
  38.     add.w    #4,sp
  39.     move.l    #L14,-(sp)
  40.     move.l    _t_op,-(sp)
  41.     jsr    _stricmp
  42.     add.w    #8,sp
  43.     tst.l    d0
  44.     bne    L13
  45.     move.l    _t_arg,-10(a6)
  46. L15:
  47.     move.l    -10(a6),a0
  48.     cmp.b    #44,(a0)
  49.     beq    L16
  50.     move.l    -10(a6),a0
  51.     tst.b    (a0)
  52.     beq    L16
  53.     add.l    #1,-10(a6)
  54.     bra    L15
  55. L16:
  56.     tst.l    -10(a6)
  57.     beq    L17
  58.     add.l    #1,-10(a6)
  59.     clr.l    -14(a6)
  60. L18:
  61.     move.l    -10(a6),a0
  62.     move.b    (a0),d0
  63.     ext.w    d0
  64.     ext.l    d0
  65.     add.l    #__ctype,d0
  66.     move.l    d0,a0
  67.     clr.l    d0
  68.     move.b    (a0),d0
  69.     and.l    #12,d0
  70.     beq    L19
  71.     cmp.l    #4,-14(a6)
  72.     bge    L19
  73.     move.l    -10(a6),a0
  74.     lea    -5(a6),a1
  75.     add.l    -14(a6),a1
  76.     move.b    (a0),(a1)
  77.     add.l    #1,-10(a6)
  78.     add.l    #1,-14(a6)
  79.     bra    L18
  80. L19:
  81.     lea    -5(a6),a0
  82.     add.l    -14(a6),a0
  83.     clr.b    (a0)
  84.     move.l    L1,-(sp)
  85.     pea    -5(a6)
  86.     jsr    _stricmp
  87.     add.w    #8,sp
  88.     tst.l    d0
  89.     bne    L20
  90.     clr.l    L0
  91.     bra    L10
  92.     bra    L21
  93. L20:
  94.     move.l    L1+4,-(sp)
  95.     pea    -5(a6)
  96.     jsr    _stricmp
  97.     add.w    #8,sp
  98.     tst.l    d0
  99.     bne    L22
  100.     move.l    #1,L0
  101.     bra    L10
  102.     bra    L23
  103. L22:
  104.     move.l    L1+8,-(sp)
  105.     pea    -5(a6)
  106.     jsr    _stricmp
  107.     add.w    #8,sp
  108.     tst.l    d0
  109.     bne    L24
  110.     move.l    #2,L0
  111.     bra    L10
  112. L24:
  113. L23:
  114. L21:
  115. L17:
  116.     bra    L25
  117. L13:
  118.     move.l    #L27,-(sp)
  119.     move.l    _t_op,-(sp)
  120.     jsr    _stricmp
  121.     add.w    #8,sp
  122.     tst.l    d0
  123.     bne    L26
  124.     bra    L10
  125.     bra    L28
  126. L26:
  127.     move.l    #L30,-(sp)
  128.     move.l    _t_op,-(sp)
  129.     jsr    _stricmp
  130.     add.w    #8,sp
  131.     tst.l    d0
  132.     bne    L29
  133.     move.l    _ofp,-(sp)
  134.     move.l    #L5,-(sp)
  135.     jsr    _fputs
  136.     add.w    #8,sp
  137.     bra    L10
  138. L29:
  139. L28:
  140. L25:
  141.     cmp.l    #2,L0
  142.     bne    L31
  143.     move.l    #1,d0
  144.     bra    L8
  145. L31:
  146.     move.l    L0,-(sp)
  147.     jsr    _store
  148.     add.w    #4,sp
  149. L10:
  150.     bra    L9
  151. L11:
  152. L8:
  153.     unlk    a6
  154.     rts
  155. L7:
  156.     link    a6,#-14
  157.     bra    L6
  158. _tokenize:
  159.     bra    L33
  160. L32:
  161.     move.l    8(a6),a3
  162.     move.l    a3,-(sp)
  163.     move.l    #L38,-(sp)
  164.     jsr    _printf
  165.     add.w    #8,sp
  166.     clr.l    d3
  167. L39:
  168.     tst.b    (a3)
  169.     beq    L40
  170.     cmp.b    #9,(a3)
  171.     beq    L41
  172.     cmp.b    #32,(a3)
  173.     beq    L41
  174.     cmp.b    #10,(a3)
  175.     beq    L41
  176.     clr    d0
  177.     bra    L42
  178. L41:    moveq    #1,d0
  179. L42:
  180.     tst.l    d0
  181.     bne    L40
  182.     cmp.b    #58,(a3)
  183.     beq    L40
  184.     move.l    a3,d0
  185.     add.l    #1,a3
  186.     move.l    d0,a0
  187.     move.l    d3,d0
  188.     add.l    #1,d3
  189.     add.l    #L35,d0
  190.     move.l    d0,a1
  191.     move.b    (a0),(a1)
  192.     bra    L39
  193. L40:
  194.     move.l    #L35,d0
  195.     add.l    d3,d0
  196.     move.l    d0,a0
  197.     clr.b    (a0)
  198.     move.l    d3,-(sp)
  199.     move.l    #L35,-(sp)
  200.     move.l    a3,-(sp)
  201.     move.l    #L45,-(sp)
  202.     jsr    _printf
  203.     add.w    #16,sp
  204.     cmp.b    #58,(a3)
  205.     bne    L46
  206.     add.l    #1,a3
  207. L46:
  208. L47:
  209.     cmp.b    #9,(a3)
  210.     beq    L49
  211.     cmp.b    #32,(a3)
  212.     beq    L49
  213.     cmp.b    #10,(a3)
  214.     bne    L48
  215. L49:
  216.     add.l    #1,a3
  217.     bra    L47
  218. L48:
  219.     clr.l    d3
  220. L50:
  221.     tst.b    (a3)
  222.     beq    L51
  223.     cmp.b    #9,(a3)
  224.     beq    L52
  225.     cmp.b    #32,(a3)
  226.     beq    L52
  227.     clr    d0
  228.     bra    L53
  229. L52:    moveq    #1,d0
  230. L53:
  231.     tst.l    d0
  232.     bne    L54
  233.     cmp.b    #10,(a3)
  234.     beq    L54
  235.     clr    d0
  236.     bra    L55
  237. L54:    moveq    #1,d0
  238. L55:
  239.     tst.l    d0
  240.     bne    L51
  241.     move.l    a3,d0
  242.     add.l    #1,a3
  243.     move.l    d0,a0
  244.     move.l    d3,d0
  245.     add.l    #1,d3
  246.     add.l    #L36,d0
  247.     move.l    d0,a1
  248.     move.b    (a0),(a1)
  249.     bra    L50
  250. L51:
  251.     move.l    #L36,d0
  252.     add.l    d3,d0
  253.     move.l    d0,a0
  254.     clr.b    (a0)
  255. L56:
  256.     cmp.b    #9,(a3)
  257.     beq    L58
  258.     cmp.b    #32,(a3)
  259.     beq    L58
  260.     cmp.b    #10,(a3)
  261.     bne    L57
  262. L58:
  263.     add.l    #1,a3
  264.     bra    L56
  265. L57:
  266.     clr.l    d3
  267. L59:
  268.     tst.b    (a3)
  269.     beq    L60
  270.     cmp.b    #9,(a3)
  271.     beq    L61
  272.     cmp.b    #32,(a3)
  273.     beq    L61
  274.     clr    d0
  275.     bra    L62
  276. L61:    moveq    #1,d0
  277. L62:
  278.     tst.l    d0
  279.     bne    L63
  280.     cmp.b    #10,(a3)
  281.     beq    L63
  282.     clr    d0
  283.     bra    L64
  284. L63:    moveq    #1,d0
  285. L64:
  286.     tst.l    d0
  287.     bne    L60
  288.     move.l    a3,d0
  289.     add.l    #1,a3
  290.     move.l    d0,a0
  291.     move.l    d3,d0
  292.     add.l    #1,d3
  293.     add.l    #L37,d0
  294.     move.l    d0,a1
  295.     move.b    (a0),(a1)
  296.     bra    L59
  297. L60:
  298.     move.l    #L37,d0
  299.     add.l    d3,d0
  300.     move.l    d0,a0
  301.     clr.b    (a0)
  302.     move.l    #L37,-(sp)
  303.     move.l    #L36,-(sp)
  304.     move.l    #L35,-(sp)
  305.     move.l    #L65,-(sp)
  306.     jsr    _printf
  307.     add.w    #16,sp
  308.     move.l    #L35,_t_lab
  309.     move.l    #L36,_t_op
  310.     move.l    #L37,_t_arg
  311. L34:
  312.     movem.l    (sp)+,d3/a3
  313.     unlk    a6
  314.     rts
  315. L33:
  316.     link    a6,#-0
  317.     movem.l    d3/a3,-(sp)
  318.     bra    L32
  319.     SECTION NUM4,BSS
  320. L35:    ds.b    2048
  321. L36:    ds.b    2048
  322. L37:    ds.b    2048
  323.     SECTION NUM5,DATA
  324. L65:    dc.b    'line -> |%s'
  325.     dc.b    '| |%s| |%s|',$a
  326.     dc.b    0
  327. L45:    dc.b    'line .. |%s'
  328.     dc.b    '| |%s| %d',$a
  329.     dc.b    0
  330. L38:    dc.b    'line    |%s'
  331.     dc.b    '|',$a
  332.     dc.b    0
  333. L30:    dc.b    'XDEF'
  334.     dc.b    0
  335. L27:    dc.b    'END'
  336.     dc.b    0
  337. L14:    dc.b    'SECTION'
  338.     dc.b    0
  339. L4:    dc.b    'code'
  340.     dc.b    0
  341. L3:    dc.b    'data'
  342.     dc.b    0
  343. L2:    dc.b    'bss'
  344.     dc.b    0
  345.     END
  346.